| import qualified Maybe import qualified Prelude
|
| genericDrop :: Integral b => b -> [a] -> [a]
genericDrop | zu xs | = | genericDrop5 zu xs |
genericDrop | vw [] | = | genericDrop3 vw [] |
genericDrop | n (vx : xs) | = | genericDrop2 n (vx : xs) |
genericDrop | vy vz | = | genericDrop0 vy vz |
|
|
genericDrop0 | vy vz | = | error [] |
|
|
genericDrop1 | n vx xs True | = | genericDrop (n - 1) xs |
genericDrop1 | n vx xs False | = | genericDrop0 n (vx : xs) |
|
|
genericDrop2 | n (vx : xs) | = | genericDrop1 n vx xs (n > 0) |
genericDrop2 | yv yw | = | genericDrop0 yv yw |
|
|
genericDrop3 | vw [] | = | [] |
genericDrop3 | yy yz | = | genericDrop2 yy yz |
|
|
genericDrop4 | True zu xs | = | xs |
genericDrop4 | zv zw zx | = | genericDrop3 zw zx |
|
|
genericDrop5 | zu xs | = | genericDrop4 (zu == 0) zu xs |
genericDrop5 | zy zz | = | genericDrop3 zy zz |
|
| import qualified Maybe import qualified Prelude
|
| genericDrop :: Integral b => b -> [a] -> [a]
genericDrop | zu xs | = | genericDrop5 zu xs |
genericDrop | vw [] | = | genericDrop3 vw [] |
genericDrop | n (vx : xs) | = | genericDrop2 n (vx : xs) |
genericDrop | vy vz | = | genericDrop0 vy vz |
|
|
genericDrop0 | vy vz | = | error [] |
|
|
genericDrop1 | n vx xs True | = | genericDrop (n - fromInt (Pos (Succ Zero))) xs |
genericDrop1 | n vx xs False | = | genericDrop0 n (vx : xs) |
|
|
genericDrop2 | n (vx : xs) | = | genericDrop1 n vx xs (n > fromInt (Pos Zero)) |
genericDrop2 | yv yw | = | genericDrop0 yv yw |
|
|
genericDrop3 | vw [] | = | [] |
genericDrop3 | yy yz | = | genericDrop2 yy yz |
|
|
genericDrop4 | True zu xs | = | xs |
genericDrop4 | zv zw zx | = | genericDrop3 zw zx |
|
|
genericDrop5 | zu xs | = | genericDrop4 (zu == fromInt (Pos Zero)) zu xs |
genericDrop5 | zy zz | = | genericDrop3 zy zz |
|